#pragma once

#include "basic_typedef.h"

#include <Windows.h>
#include <vector>
#include <string>

enum editing_options{
	UP=0,
	LEFT,
	SWITCH
};

typedef std::vector<std::vector<editing_options>> decision_array;

class EditDistanceCalculator
{
public:
	EditDistanceCalculator(const std::vector<ConfSet>& first_path,const std::vector<ConfSet>& second_path);
	decision_array get_decision_array();
	std::vector<std::vector<UINT32>> get_connections_to_try() const;
	std::vector<editing_options> get_shortest_path() const;
private:
	void print_costs(const std::vector<std::vector<double>>& costs) const;
	void print_decisions() const;
	std::string decision_to_string(editing_options e) const;	
private:
	decision_array _my_decisions;
	const static double COST_OF_REMOVING_NODE;
};